package com.epadmin.admin;

import com.ep.general.ActionSupportCustom;
import com.ep.general.admin.Administrator;
import com.ep.general.admin.AdministratorMdt;
import com.ep.general.app.Utils;
import com.epadmin.app.login.LoginRequierd;

public class AdminAction extends ActionSupportCustom<Administrator> implements LoginRequierd {

	private static final long serialVersionUID = 3758679766717584271L;
	private AdminForm form;

	@Override
	public String execute() throws Exception {
		return SUCCESS;
	}

	private boolean isValid(AdminForm item) {
		if (!item.getHaslo().equals(item.getHaslo2())) {
			setText("Podane hasła się nie zgadzają");
			return false;
		}
		
		if (item.getHaslo().length() < 5) {
			setText("Hasło powinno zawierać conajmniej 5 znaków");
			return false;
		}
		
		if (item.getLogin().length() < 5) {
			setText("Login powinien zawierać conajmniej 5 znaków");
			return false;
		}
		
		if (item.getImie().length() < 2) {
			setText("Imie powinno zawierać conajmniej 2 znaki");
			return false;
		}
		
		if (item.getNazwisko().length() < 3) {
			setText("Nazwisko powinno zawierać conajmniej 2 znaki");
			return false;
		}
		
		return true;
	}
	
	public String save() {
		AdminForm adminForm = getForm();
		
		if (!isValid(adminForm)) {
			return TEXT_RESULT;
		}
		
		Administrator adminNowy = getForm().getData();
		adminNowy.setId(getLoggedUser().getId());
		adminNowy.setHaslo(Utils.convertToMd5(adminNowy.getHaslo()));
		Administrator newLoggedUser = new AdministratorMdt().makePersistent(adminNowy);
		
		getSession().remove(LOGGED_USER);
		getSession().put(ActionSupportCustom.LOGGED_USER, newLoggedUser);

		setText("Dane zostały poprawnie zmienione");
		return TEXT_RESULT;
	}

	public AdminForm getForm() {
		if (form == null)
			form = new AdminForm();
		return form;
	}

	public void setForm(AdminForm form) {
		this.form = form;
	}
}
